/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controlador;

import Dao.ColaboradorJpaController;
import Dao.UsuarioJpaController;
import Dao.exceptions.NonexistentEntityException;
import Dao.exceptions.PreexistingEntityException;
import Logica.Colaborador;
import Logica.Usuario;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.persistence.EntityManagerFactory;

/**
 *
 * @author User
 */
public class ControladorUsuario {

    private EntityManagerFactory factory;
    public ConnectionFactory connection;
    private UsuarioJpaController daoUsuario;
    private ColaboradorJpaController daoCol;

    public ControladorUsuario() {
        //connection = ConnectionFactory.getFactory();
        connection = new ConnectionFactory();
        connection.setFactory();
        factory= connection.getFactoria();
        daoUsuario = new UsuarioJpaController(factory);
        daoCol = new ColaboradorJpaController(factory);

    }

    public boolean crearUsuario(String login, String pass, String rol) {
        Usuario user = new Usuario();
        user.setPass(pass);
        user.setRol(rol);
        user.setLogin(login);
        try {
            daoUsuario.create(user);
            return true;
        } catch (PreexistingEntityException ex) {
            Logger.getLogger(ControladorUsuario.class.getName()).log(Level.SEVERE, null, ex);
            return false;
        } catch (Exception ex) {
            Logger.getLogger(ControladorUsuario.class.getName()).log(Level.SEVERE, null, ex);
            return false;
        }
    }

    public boolean eliminarUsuario(String login) {
        try {
            daoUsuario.destroy(login);
            return true;
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(ControladorUsuario.class.getName()).log(Level.SEVERE, null, ex);
            return false;
        }
    }

    public boolean actualizarUsuario(String login, String pass, String rol) {
        Usuario user = daoUsuario.findUsuario(login);
        user.setPass(pass);
        user.setRol(rol);
        try {
            daoUsuario.edit(user);
            return true;
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(ControladorUsuario.class.getName()).log(Level.SEVERE, null, ex);
            return false;
        } catch (Exception ex) {
            Logger.getLogger(ControladorUsuario.class.getName()).log(Level.SEVERE, null, ex);
            return false;
        }
    }

    public Usuario consultar(String login) {
        Usuario user = daoUsuario.findUsuario(login);
        return user;
    }

    public List<Usuario> listar() {
        List<Usuario> users = daoUsuario.findUsuarioEntities();
        return users;
    }

    public boolean verificarUser(String login, String pass) {
        //EntityManager em = getEntityManager();
        List<Usuario> usuarios = daoUsuario.findUsuarioEntities();
        boolean verificacion = false;
        for (Usuario u : usuarios) {
            if (u.getLogin().equals(login) && u.getPass().equals(pass)) {
                verificacion = true;
            } else;
        }
        return verificacion;
    }
    public Colaborador getColaboradorUser(String Login){
        List<Colaborador> colaboradores = daoCol.findColaboradorEntities();
        Colaborador col = new Colaborador();
        System.out.println(colaboradores.size());
        for(int i=0;i<colaboradores.size();i++){
            System.out.println(colaboradores.get(i).getLogin().getLogin());
//            if(colaboradores.get(i).getLogin().getLogin().equals(Login)){
//                col=colaboradores.get(i);
//            }else ;
        }
        return col;
        
    }
    
    public static void main(String [] args){
        ControladorUsuario o = new ControladorUsuario();
        o.getColaboradorUser("");
    }
    
    

}
